package com.spring.pick2pick.dao;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.ibatis.SqlMapClientTemplate;
import org.springframework.stereotype.Repository;

import com.spring.pick2pick.common.PageHandler;
import com.spring.pick2pick.model.NoticeItem;

/** 공지사항의 기능을 처리하는 Dao */
@Repository
public class NoticeDao {
	
	@Autowired
	private SqlMapClientTemplate sqlMapClientTemplate;
	
	/** 공지사항 추가 기능 */
	public int addNotice(NoticeItem item) {
		return (Integer) sqlMapClientTemplate.insert("notice.addNotice", item);
	}
	
	/**공지사항 전시여부 기능 */
	public int editDisplay(NoticeItem item) {
		return (Integer) sqlMapClientTemplate.update("notice.editDisplay", item);
	}
	
	/** 공지사항 수정 기능 */
	public int editNotice(NoticeItem item) {
		return (Integer) sqlMapClientTemplate.update("notice.editNotice", item);
	}
	
	/** 공지사항 조회 기능 */
	public NoticeItem getNotice(NoticeItem item) {
		return (NoticeItem) sqlMapClientTemplate.queryForObject("notice.getNotice", item);
	}
	
	/**공지사항 삭제 기능 */
	public int deleteNotice(NoticeItem item) {
		return (Integer) sqlMapClientTemplate.delete("notice.deleteNotice", item);
	}
	
	/** 공지사항 리스트 기능 */
	@SuppressWarnings("unchecked")
	public List<NoticeItem> getNoticeList(int page, int size) {
		
		int total = (Integer) sqlMapClientTemplate.queryForObject("notice.getNoticeListCount");
		
		// 페이징 처리 --> 한 페이지에 count개씩, 페이지번호는 10개 출력
		PageHandler.getInstance(page, total, size, 10);
		
		Map<String, Integer> map = new HashMap<String, Integer>(); 
		map.put("start", PageHandler.getInstance().getStartRec());
		map.put("end", PageHandler.getInstance().getPageArticleCount());
		
		List<NoticeItem> list = sqlMapClientTemplate.queryForList("notice.getNoticeList", map);
		
		return list;
	}
	
}
